1️⃣ Introducción

Este análisis tiene como objetivo calcular probabilidades condicionales en el dataset de “Career Success”, respondiendo preguntas como:

Estos cálculos son clave para evaluar factores que contribuyen al éxito profesional y mejorar la toma de decisiones en la planificación de carreras.

2️⃣ Carga de Librerías y Configuración

# 📌 Cargar librerías necesarias
library(here)           # Manejo de rutas dinámicas
library(janitor)        # Limpieza de nombres de columnas
library(summarytools)   # Resumen estadístico detallado
library(ggplot2)        # Gráficos
library(dplyr)          # Manipulación de datos
library(plotly)         # Gráficos Interactivos

# 📌 Configuración de gráficos globales
theme_set(theme_minimal())
source(here("reportes/Proy_Education_Career_Success/00_CONFIGURACION.r"))

# 📌 Cargar scripts de preprocesamiento
source(here("scripts/utils.r"))
source(here("scripts/1_preprocesamiento_esp_dataset.r"))
source(here("scripts/3_analisis_probabilidad.r"))
# 📌 Cargar dataset limpio
dataset_career_success <- preprocesar_datos(here("datasets/education_data_limpio.csv"), "Education Career Success")
## 📥 Cargando datos del proyecto: Education Career Success 
## 🧹 Realizando limpieza de datos...
## ✅ Preprocesamiento completado para: Education Career Success

3️⃣ Cálculo de Probabilidades Condicionales

Analizamos la relación entre factores de éxito y el éxito profesional.

📌 Probabilidad de Éxito Profesional dado un Alto Nivel de Educación

# Calcular probabilidades
resultados_university_vs_satisfaction <- calcular_probabilidades(
  data = dataset_career_success,
  condicionante = "university_ranking",
  objetivo = "career_satisfaction",
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_university_vs_satisfaction$tabla_contingencia)
## # A tibble: 25 × 3
##    university_ranking career_satisfaction     n
##    <fct>              <fct>               <int>
##  1 [0.001,201]        [0.991,2.8]           200
##  2 [0.001,201]        (2.8,4.6]             190
##  3 [0.001,201]        (4.6,6.4]             197
##  4 [0.001,201]        (6.4,8.2]             200
##  5 [0.001,201]        (8.2,10]              193
##  6 (201,401]          [0.991,2.8]           176
##  7 (201,401]          (2.8,4.6]             196
##  8 (201,401]          (4.6,6.4]             207
##  9 (201,401]          (6.4,8.2]             214
## 10 (201,401]          (8.2,10]              231
## # ℹ 15 more rows
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultados_university_vs_satisfaction$probabilidades_condicionales)
## # A tibble: 25 × 4
##    university_ranking career_satisfaction     n prob_condicional
##    <fct>              <fct>               <int>            <dbl>
##  1 [0.001,201]        [0.991,2.8]           200            0.204
##  2 [0.001,201]        (2.8,4.6]             190            0.194
##  3 [0.001,201]        (4.6,6.4]             197            0.201
##  4 [0.001,201]        (6.4,8.2]             200            0.204
##  5 [0.001,201]        (8.2,10]              193            0.197
##  6 (201,401]          [0.991,2.8]           176            0.172
##  7 (201,401]          (2.8,4.6]             196            0.191
##  8 (201,401]          (4.6,6.4]             207            0.202
##  9 (201,401]          (6.4,8.2]             214            0.209
## 10 (201,401]          (8.2,10]              231            0.226
## # ℹ 15 more rows
cat("\nProbabilidades marginales de career_success:\n")
## 
## Probabilidades marginales de career_success:
print(resultados_university_vs_satisfaction$probabilidades_marginales)
## # A tibble: 5 × 3
##   career_satisfaction     n prob_marginal
##   <fct>               <int>         <dbl>
## 1 [0.991,2.8]           966         0.193
## 2 (2.8,4.6]             989         0.198
## 3 (4.6,6.4]             980         0.196
## 4 (6.4,8.2]            1030         0.206
## 5 (8.2,10]             1035         0.207
resultados_gender_vs_salary <- calcular_probabilidades(
  data = dataset_career_success,
  condicionante = "gender",
  objetivo = "starting_salary",
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_gender_vs_salary$tabla_contingencia)
## # A tibble: 15 × 3
##    gender starting_salary         n
##    <fct>  <fct>               <int>
##  1 Female [2.49e+04,4.02e+04]   603
##  2 Female (4.02e+04,5.54e+04]   886
##  3 Female (5.54e+04,7.06e+04]   649
##  4 Female (7.06e+04,8.58e+04]   194
##  5 Female (8.58e+04,1.01e+05]    18
##  6 Male   [2.49e+04,4.02e+04]   609
##  7 Male   (4.02e+04,5.54e+04]   938
##  8 Male   (5.54e+04,7.06e+04]   679
##  9 Male   (7.06e+04,8.58e+04]   205
## 10 Male   (8.58e+04,1.01e+05]    27
## 11 Other  [2.49e+04,4.02e+04]    52
## 12 Other  (4.02e+04,5.54e+04]    74
## 13 Other  (5.54e+04,7.06e+04]    49
## 14 Other  (7.06e+04,8.58e+04]    16
## 15 Other  (8.58e+04,1.01e+05]     1
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultados_gender_vs_salary$probabilidades_condicionales)
## # A tibble: 15 × 4
##    gender starting_salary         n prob_condicional
##    <fct>  <fct>               <int>            <dbl>
##  1 Female [2.49e+04,4.02e+04]   603          0.257  
##  2 Female (4.02e+04,5.54e+04]   886          0.377  
##  3 Female (5.54e+04,7.06e+04]   649          0.276  
##  4 Female (7.06e+04,8.58e+04]   194          0.0826 
##  5 Female (8.58e+04,1.01e+05]    18          0.00766
##  6 Male   [2.49e+04,4.02e+04]   609          0.248  
##  7 Male   (4.02e+04,5.54e+04]   938          0.382  
##  8 Male   (5.54e+04,7.06e+04]   679          0.276  
##  9 Male   (7.06e+04,8.58e+04]   205          0.0834 
## 10 Male   (8.58e+04,1.01e+05]    27          0.0110 
## 11 Other  [2.49e+04,4.02e+04]    52          0.271  
## 12 Other  (4.02e+04,5.54e+04]    74          0.385  
## 13 Other  (5.54e+04,7.06e+04]    49          0.255  
## 14 Other  (7.06e+04,8.58e+04]    16          0.0833 
## 15 Other  (8.58e+04,1.01e+05]     1          0.00521
cat("\nProbabilidades marginales de career_success:\n")
## 
## Probabilidades marginales de career_success:
print(resultados_gender_vs_salary$probabilidades_marginales)
## # A tibble: 5 × 3
##   starting_salary         n prob_marginal
##   <fct>               <int>         <dbl>
## 1 [2.49e+04,4.02e+04]  1264        0.253 
## 2 (4.02e+04,5.54e+04]  1898        0.380 
## 3 (5.54e+04,7.06e+04]  1377        0.275 
## 4 (7.06e+04,8.58e+04]   415        0.083 
## 5 (8.58e+04,1.01e+05]    46        0.0092

4️⃣ Visualización de Resultados

📌 Gráfico de Probabilidad de Satisfacción Laboral según el Ranking de la Universidad

p_university_vs_satisfaction <- visualizar_probabilidad_condicional(
  data = dataset_career_success,
  condicionante = "university_ranking",
  objetivo = "career_satisfaction",
  titulo = "Probabilidad  Satisfacción Laboral según Ranking de la Universidad",
  xlab = "Ranking de la Universidad (Intervalos)",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Education_Career_Success/resultados_generados/probabilidad_condicional_university_vs_satisfaction.png"),
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar gráfico interactivo
p_university_vs_satisfaction
p_gender_vs_salary <- visualizar_probabilidad_condicional(
  data = dataset_career_success,
  condicionante = "gender",
  objetivo = "starting_salary",
  titulo = "Probabilidad  Salario inicial según Género",
  xlab = "Género",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Education_Career_Success/resultados_generados/probabilidad_condicional_gender_vs_salary.png"),
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar gráfico interactivo
p_gender_vs_salary